#ifndef FGE_TEXTURE_HPP
#define FGE_TEXTURE_HPP

#include <string>

namespace fge
{

struct TextureRegion;

namespace TextureFilter
{
	enum Type
	{
		Linear = 0,
		NearestNeighbor,
	};
}

class Texture
{
public:
	virtual ~Texture();

	int GetWidth() const { return width; }
	int GetHeight() const { return height; }
	unsigned int GetTextureId() const { return textureId; }

	void SetFilter(TextureFilter::Type filterType);

	static Texture* FromFile(const std::string &fileName, TextureRegion *textureRegion = NULL);

protected:
	Texture();

	int width;
	int height;

	unsigned int textureId;

	TextureFilter::Type filterType;
};

}

#endif//FGE_TEXTURE_HPP
